/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proy01;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import proy01.beans.Persona;
import proy01.util.ComparatorPersonaNombre;

/**
 *
 * @author malaga
 */
public class Proy01 {
    
    ArrayList<Persona> listaPersona = new ArrayList<Persona>();

    public Proy01() {
        try {
            llenarLista();
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
        
    }
    
    private void llenarLista() throws ParseException {
        
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        
        Persona p01 = new Persona();
        Persona p02 = new Persona();
        Persona p03 = new Persona();
        Persona p04 = new Persona();
        Persona p05 = new Persona();
        
        p01.setId(1);
        p01.setNombre("ccccccc");
        p01.setFecNac(sdf.parse("01/01/2012"));
        
        p02.setId(2);
        p02.setNombre("ddddddd");
        p02.setFecNac(sdf.parse("02/02/2012"));
        
        p03.setId(3);
        p03.setNombre("aaaaaaa");
        p03.setFecNac(sdf.parse("03/03/2012"));
        
        p04.setId(4);
        p04.setNombre("bbbbbbb");
        p04.setFecNac(sdf.parse("04/04/2012"));
        
        p05.setId(5);
        p05.setNombre("ddddddd");
        p05.setFecNac(sdf.parse("05/05/2012"));
        
        // agregamos desordenadamente
        listaPersona.add(p03);
        listaPersona.add(p04);
        listaPersona.add(p01);
        listaPersona.add(p05);
        listaPersona.add(p02);
        

    }
    
    public void ordenarLista() {
                
        Collections.sort(listaPersona);
        
        System.out.println("----------------------------");
        System.out.println("Se ha ordenado la lista ascendentemente");
        System.out.println("----------------------------");
    }
    
    public void ordenarListaReverse() {
        
        Collections.sort(listaPersona, Collections.reverseOrder());
        
        System.out.println("----------------------------");
        System.out.println("Se ha ordenado la lista descendentemente");
        System.out.println("----------------------------");
    }
    
    public void ordenarPorNombre() {
        
        ComparatorPersonaNombre comp = new ComparatorPersonaNombre();
        
        Collections.sort(listaPersona, comp);
        
        System.out.println("----------------------------");
        System.out.println("Se ha ordenado la lista por el nombre");
        System.out.println("----------------------------");
    }
    
    public void mostrarLista() {
        
        for (Persona per:listaPersona) {
            
            // puedo imprimir directamente porque he implementado el mètodo
            // toString.
            System.out.println(per);
        }
        
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Proy01 app = new Proy01();
        
        app.mostrarLista();
        
        //app.ordenarLista();
        
        //app.mostrarLista();
        
        //app.ordenarListaReverse();
        
        //app.mostrarLista();
        
        app.ordenarPorNombre();
        
        app.mostrarLista();
    }
}
